import { store, storeBehavior } from '../../store/store'
import {
  getOrderCountsAPI,
  getUserAssetsAPI,
  getUserInfoAPI,
} from '../../apis/my'
import { orderNavbar, service } from '../../constant/constant'
import { setTabBarCount } from '../../utils/utils'

Page({
  // 导入 store 配置
  behaviors: [storeBehavior],
  // 监听 store 中的数据变化
  storeBindings: {
    store,
    // 类似与 Vuex 的 mapState 辅助函数
    fields: ['isLogin'],
  },
  // 页面数据
  data: {
    userInfo: {},
    assets: {},
    orderNavbar,
    service,
    statusBarHeight: 0,
  },
  onLoad() {
    this.setData({
      statusBarHeight: wx.getSystemInfoSync().statusBarHeight,
    })
  },
  // 页面显示，获取最新用户信息
  onShow() {
    // 如果没登录，则不发送请求
    if (store.isLogin === false) return
    // 获取用户信息
    this.getUserInfo()
    // 获取用户资产
    this.getUserAssets()
    // 获取用户订单数量
    this.getOrderCounts()
    // 页面显示时更新购物车数量
    setTabBarCount()
  },
  // 获取用户信息
  async getUserInfo() {
    const res = await getUserInfoAPI()
    this.setData({
      userInfo: res.data.userInfo,
    })
  },
  // 获取用户资产
  async getUserAssets() {
    const res = await getUserAssetsAPI()
    this.setData({
      assets: res.data.assets,
    })
  },
  // 获取用户订单数量
  async getOrderCounts() {
    const res = await getOrderCountsAPI()
    const counts = res.data.counts
    this.setData({
      orderNavbar: this.data.orderNavbar.map((v) => ({
        ...v,
        count: counts[v.id],
      })),
    })
  },
  // 去登录页
  onLogin() {
    // 未登录跳转到登录页
    wx.navigateTo({
      url: '/pages/login/login',
    })
  },
  // 退出登录
  async onLogout() {
    // 弹出模态框二次确认
    const { confirm } = await wx.showModal({
      title: '温馨提示',
      content: '您确定要退出登录吗?',
    })
    // 点击确定
    if (confirm) {
      // 清空当前页面数据
      this.setData({
        userInfo: {},
      })
      // 清除 store 中的 userInfo
      store.clearUser()
      // 移除 tabBar 数量
      wx.removeTabBarBadge({ index: 2 })
    }
  },
})
